package DomainPackage;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.List;

public class YolcuUcus extends Ucus {
	
	private List<Koltuk> koltuklar = new ArrayList<Koltuk>();
	private YolcuUcak yolcuUcak;	
	
	public List<Float> getFiyatList(){
		List<Float> fiyatList = new ArrayList<Float>();
		for (Koltuk k: koltuklar){
			if (k.getClass().getName() == "DomainPackage.UcusEkonomikKoltuk"){
				fiyatList.add(k.getFiyat());
				break;
			}
		}
		for (Koltuk k: koltuklar){
			if (k.getClass().getName() == "DomainPackage.UcusBusinessKoltuk"){
				fiyatList.add(k.getFiyat());
				break;
			}
		}
		
		return fiyatList;
			
		
	}


	public int getYolcuUcakBusinessKoltukSayisi() {
		int businessKoltuk = 0;
		for (Koltuk k: (this.getYolcuUcak().getKoltukListesi())){
			if (k.getClass().getName().equals("DomainPackage.BusinessKoltuk"))
				businessKoltuk++;
				
		}
		
		return businessKoltuk;
	}


	public int getYolcuUcakEkonomikKoltukSayisi() {
		int ekonomikKoltuk = 0;
		for (Koltuk k: (this.getYolcuUcak().getKoltukListesi())){
			if (k.getClass().getName().equals("DomainPackage.EkonomikKoltuk"))
				ekonomikKoltuk++;
				
		}
		
		return ekonomikKoltuk;
	}
	public YolcuUcak getYolcuUcak() {
		return yolcuUcak;
	}

	public void setYolcuUcak(YolcuUcak yolcuUcak) {
		this.yolcuUcak = yolcuUcak;
		super.setUcak(yolcuUcak);
		for (Koltuk k: yolcuUcak.getKoltukListesi()){
			if (k.getClass().getName() == "DomainPackage.BusinessKoltuk"){
				UcusBusinessKoltuk ubk = new UcusBusinessKoltuk();
				ubk.setKoltukNo(k.getKoltukNo());
				this.koltuklar.add(ubk);
			}
			else if (k.getClass().getName() == "DomainPackage.EkonomikKoltuk"){
				UcusEkonomikKoltuk uek = new UcusEkonomikKoltuk();
				uek.setKoltukNo(k.getKoltukNo());
				this.koltuklar.add(uek);
			}
		}
	}

	public List<Koltuk> getKoltuklar() {
		return koltuklar;
	}

	public void setKoltuklar(List<Koltuk> koltuklar) {
		this.koltuklar = koltuklar;
	}
	
	public List<Koltuk> getUygunKoltuklar() {
		List<Koltuk> koltukListesi = new ArrayList<Koltuk>();
		for (Koltuk i: getKoltuklar())
			if (!i.isDoluMu())
				koltukListesi.add(i);
				
		return koltukListesi;
	}
	
	public void setUcak(YolcuUcak ucak) {
		// TODO Auto-generated method stub
		super.setUcak(ucak);
		for (Koltuk k: ucak.getKoltukListesi()){
			if (k.getClass().getName() == "DomainPackage.BusinessKoltuk"){
				UcusBusinessKoltuk ubk = new UcusBusinessKoltuk();
				ubk.setKoltukNo(k.getKoltukNo());
				this.koltuklar.add(ubk);
			}
			else if (k.getClass().getName() == "DomainPackage.EkonomikKoltuk"){
				UcusEkonomikKoltuk uek = new UcusEkonomikKoltuk();
				uek.setKoltukNo(k.getKoltukNo());
				this.koltuklar.add(uek);
			}
		}
	}

	public YolcuUcus() {
		super();
	}

	public Koltuk koltukGetir(int koltukID) {
		return this.getUygunKoltuklar().get(koltukID);
	}


	public float getYolcuUcakBusinessKoltukFiyat() {
		for (Koltuk k: getKoltuklar()){
			if (k.getClass().getName() == "DomainPackage.UcusBusinessKoltuk"){
				return k.getFiyat();
			}
		}
		return (float)0.0;
	}
	public float getYolcuUcakEkonomikKoltukFiyat() {
		for (Koltuk k: getKoltuklar()){
			if (k.getClass().getName() == "DomainPackage.UcusEkonomikKoltuk"){
				return k.getFiyat();
			}
		}
		return (float)0.0;
	}


	public String getUcusTarihiDuzgun() {
		String s = this.getUcusTarihi().get(GregorianCalendar.DAY_OF_MONTH) + "/" + this.getUcusTarihi().get(GregorianCalendar.MONTH) + "/" + this.getUcusTarihi().get(GregorianCalendar.YEAR);
		return s;
	}


}
